#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/*** RUBRICA TELEFONICA UTILIZZANDO VETTORI PARALLELI ***/
/*
Funzioni che l'utente deve poter scegliere:
1) Inserimento di un nuovo numero telefonico
2) Ricerca per cognome di un numero telefonico e visualizzazione dei relativi dati
3) Cancellazione dell'i-esimo numero telefonico
4) Visualizzazione di tutta la rubrica telefonica
0) Chiusura del programma

Dettagli e vincoli:
- Non pių di 100 numeri telefonici
- Ad ogni numero telefonico sono associati nome e cognome del rispettivo utente
- Tutte le stringhe hanno una lunghezza massima di 50 caratteri
- Il programma č case sensitive

Dettagli implementativi:
- Non verranno utilizzate strutture o funzioni, ma solo vettori di stringhe paralleli
- Si suppone che gli input siano corretti
*/

#define MAX_NUM_TEL 100
#define MAX_CARATTERI 50

int main()
{
	char cognome[MAX_NUM_TEL][MAX_CARATTERI], nome[MAX_NUM_TEL][MAX_CARATTERI], tel[MAX_NUM_TEL][MAX_CARATTERI];
	char scelta[MAX_CARATTERI], str[MAX_CARATTERI];
	int cont = 0, i, trovati = 0;
	
	do
	{
		printf("\n\\*** MENU' ***\\");
		printf("\n1) Inserisci numero");
		printf("\n2) Ricerca numero (per cognome)");
		printf("\n3) Cancella numero (per posizione)");
		printf("\n4) Visualizza rubrica");
		printf("\n0) Termina");
		printf("\nInserire la scelta: ");
		gets(scelta);

		switch (scelta[0])
		{
		case '0': /* Termina */
			break;

		case '1': /* Inserisci numero */
				
			printf("\n\\*** NUOVO NUMERO TELEFONICO ***\\\n");
			printf("Cognome: ");
			gets(cognome[cont]);
			printf("Nome: ");
			gets(nome[cont]);
			printf("Telefono: ");
			gets(tel[cont]);
			
			cont++;

			break;
		case '2': /* Ricerca numero (per cognome) */

			printf("\n\\*** RICERCA NUMERO TELEFONICO (PER COGNOME) ***\\\n");
			
			if (cont < 1)
			{
				printf("Nessun numero presente in rubrica!\n");
			}
			else
			{
				printf("Cognome: ");
				gets(str);

				trovati = 0;

				for (i = 0; i < cont; i++)
				{
					if (strcmp(str, cognome[i]) == 0)
					{
						printf("%d) %s %s %s\n", i, cognome[i], nome[i], tel[i]);
						trovati++;
					}
				}

				if (trovati < 1)
				{
					printf("Nessun numero presente in rubrica!\n");
				}
			}

			break;
		
		case '3': /* Cancella numero (per posizione) */

			printf("\n\\*** CANCELLA NUMERO TELEFONICO (PER POSIZIONE) ***\\\n");
			if (cont < 1)
			{
				printf("Nessun numero presente in rubrica!\n");
			}
			else
			{
				printf("Posizione: ");
				gets(str);
				sscanf(str, "%d", &i);

				if (i < 0 || i >= cont)
				{
					printf("\nValore non accettabile!\n");
				}
				else
				{
					for (; i < cont - 1; i++)
					{
						strcpy(cognome[i], cognome[i + 1]);
						strcpy(nome[i], nome[i + 1]);
						strcpy(tel[i], tel[i + 1]);
					}

					cont--;
				}
			}

			break;

		case '4': /* Visualizza rubrica */

			printf("\n\\*** RUBRICA TELEFONICA ***\\\n");

			if (cont < 1)
			{
				printf("Nessun numero presente in rubrica!\n");
			}
			else
			{				
				for (i = 0; i < cont; i++)
				{
					printf("%d) %s %s %s\n", i, cognome[i], nome[i], tel[i]);					
				}			
			}

			break;

		default:

			printf("\nValore non accettabile!\n");
		}
	} while (scelta[0] != '0');

	system("pause");
	return 0;
}